package com.nanyang.tms.api.service.company;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.company.*;
import com.nanyang.tms.api.dto.response.company.CompanyDetailResponse;
import com.nanyang.tms.api.dto.response.company.CompanyPageKeyResponse;
import com.nanyang.tms.api.dto.response.company.CompanyPageResponse;
import com.nanyang.tms.api.dto.response.company.CompanyResponse;

public interface CompanyRpcService {
    /**
     *
     * <p>listCompany</p>
     * <p>Description:(查询服务商列表)</p>
     *
     * @param param
     * @return
     */
    ApiResult<PageBean<CompanyPageResponse>> listCompany(CompanyQueryRequest param);

    /**
     * 模糊搜索
     * @param param
     * @return
     */
    ApiResult<PageBean<CompanyPageKeyResponse>> listCompanyByKey(CompanyQueryRequest param);

    /**
     *
     * <p>getCompanyById</p>
     * <p>Description:(根据code获取企业想)</p>
     *
     * @param code
     * @return
     */
    ApiResult<CompanyDetailResponse> detail(String code);
    /**
     *
     * <p>getCompanyById</p>
     * <p>Description:(根据code获取服务商详情)</p>
     *
     * @param code
     * @return
     */
    ApiResult<CompanyResponse> selectByCode(String code);

    /**
     *
     * <p>updateCompany</p>
     * <p>Description:(禁用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> disableState(CompanyUpdateStateRequest param);
    /**
     *
     * <p>updateCompany</p>
     * <p>Description:(启用)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> enableState(CompanyUpdateStateRequest param);

    /**
     *
     * <p>updateCompany</p>
     * <p>Description:(审核通过)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> passState(CompanyUpdateStateRequest param);
    /**
     *
     * <p>updateCompany</p>
     * <p>Description:(拒绝)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> rejectState(CompanyUpdateStateRequest param);

    /**
     * 注册企业
     * @param param
     * @return
     */
    ApiResult<Boolean> saveCompany(CompanyAddRequest param);

    /**
     * 修改
     * @param param
     * @return
     */
    ApiResult<Boolean> updateCompany(CompanyUpdateRequest param);

    /**
     *
     * <p>Description:(会员等级)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> updateCompanyLevel(CompanyUpdateLevelRequest param);
}
